/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:${USER}
 * Date:${YEAR}-${MONTH}-${DAY}
 * ${TIME}
 */
public class Main {
    public static void main(String[] args) {
//        String s="abcde";
//        System.out.println(s.substring(3,5)+" "+s.substring(5));
        boolean b=solve("youzan","zanyou");
        System.out.println(b);
    }

    /**
     * 判断字符串b是否是字符串a通过循环移位得到的
     * @param a 原始字符串
     * @param b 目标字符串
     * @return 如果b可以通过a循环移位得到则返回true，否则返回false
     */
    public static boolean solve(String a, String b) {
        // 首先检查两个字符串长度是否相同，如果不同直接返回false
        if (a.length() != b.length()) {
            return false;
        }

        // 如果两个字符串完全相同，直接返回true
        if (a.equals(b)) {
            return true;
        }

        // 遍历所有可能的循环移位情况
        for (int i = 0; i < a.length(); i++) {
            // 将字符串a分为两部分：
            // 第一部分是从开始到倒数第i个字符
            StringBuffer s = new StringBuffer(a.substring(0, a.length() - i));
            // 第二部分是从倒数第i个字符到末尾
            StringBuffer s1 = new StringBuffer(a.substring(a.length() - i));

            // 将两部分交换位置并拼接，模拟循环移位
            StringBuffer s2 = new StringBuffer(s1.append(s));
            String ss2 = s2.toString();

            // 检查移位后的字符串是否与b相同
            if (ss2.equals(b)) {
                return true;
            }
        }

        // 所有可能的移位都尝试过后仍未找到匹配，返回false
        return false;
    }
    public static boolean solve1(String a, String b) {//优化版本
        // 长度不同直接返回 false
        if (a.length() != b.length()) {
            return false;
        }
        // 如果 a 和 b 相同，直接返回 true
        if (a.equals(b)) {
            return true;
        }
        // 检查 b 是否是 a + a 的子串
        return (a + a).contains(b);
    }

}